package com.vito.util;

public class DistanceUtil {

	private static double EARTH_RADIUS = 6377.830;// 地球半径(千米)
	/*
	计算两个经纬度之间的距离  结果单位：米
	 */
	public static double  getDistance(String lat1Str, String lng1Str, String lat2Str, String lng2Str) {
	    Double lat1 = Double.parseDouble(lat1Str);
	    Double lng1 = Double.parseDouble(lng1Str);
	    Double lat2 = Double.parseDouble(lat2Str);
	    Double lng2 = Double.parseDouble(lng2Str);

	    double radLat1 = rad(lat1);
	    double radLat2 = rad(lat2);
	    double a = radLat1 - radLat2;
	    double b = rad(lng1) - rad(lng2);
	    double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
	            Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
	    s = s * EARTH_RADIUS;
	    s = Math.round(s * 10000) / 10000;
	    return s;
	}

	private static double rad(double d) {
	    return d * Math.PI / 180.0;
	}

	public static void main(String[] args) {
		double dis = getDistance("35.03836237","114.114846634","35.138360257","114.11483598");
		System.out.println(dis);
	}
}
